package com.demo.java.OD501_550.OD534;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【山脉的个数(C卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146509028
 */
public class OdMain {
    public static void main(String[] args) {
        // 输入部分：获取输入数组，模拟从标准输入获取字符串
        Scanner in = new Scanner(System.in);
        // 读取输入的字符串，并按逗号分隔
        String input_str = in.nextLine();
        // 将字符串按逗号分割成数组
        String[] tmp2 = input_str.split(",");
        // 将字符串数组转换为整型数组
        int[] nums = new int[tmp2.length];
        for (int i = 0; i < tmp2.length; i++) {
            nums[i] = Integer.parseInt(tmp2[i]);
        }
        // 调用 validMountainCount 方法并输出结果
        System.out.println(validMountainCount(nums));
    }

    /**
     * 该方法用于计算山脉的个数。
     * 山脉的定义是数组中存在连续的元素，使得该元素位于左右两边的元素较小，形成上升后下降的趋势。
     *
     * @param arr 输入的整数数组
     * @return int 返回山脉的个数
     */
    public static int validMountainCount(int[] arr) {
        int result = 0; // 用于存储山脉的个数
        int i = 0; // 遍历数组的指针
        int arr_len = arr.length; // 数组的长度

        // 无限循环，用于遍历整个数组
        while (true) {
            // 如果已经遍历到数组的结尾，直接返回结果
            if (i >= arr_len) {
                return result;
            } else {
                // 处理数组的边界情况
                // 如果是第一个元素并且后面的元素比当前元素小，表示可能是山脉的顶部
                if (i == 0) {
                    if (arr[i + 1] < arr[i]) {
                        result += 1;
                    }
                }
                // 如果是数组的最后一个元素并且前面的元素比当前元素小，表示可能是山脉的顶部
                else if (i == arr_len - 1) {
                    if (arr[i - 1] < arr[i]) {
                        result += 1;
                    }
                } else {
                    // 如果当前元素比左右两边的元素大，表示找到了一个山脉
                    if (arr[i - 1] < arr[i] && arr[i + 1] < arr[i]) {
                        result += 1;
                    }
                }
            }
            // 移动指针，继续检查下一个元素
            i += 1;
        }
    }
}
